RustでByteStreamをio::Readトレイトで扱えるようにする方法
2023-03-25
初めに
Rustでバイトストリームを読みたかったので、その備忘録
ChatGPTに聞いてみた
Rustには、ByteStreamを扱うための標準的なトレイトとして、io::Readがあります。io::Readトレイトを実装することで、バイトストリームを読み込むことができます。しかし、バイトストリームを直接io::Readトレイトに渡すことはできません。この場合、一般的には、io::Cursorを使用して、バイトストリームをラップする必要があります。以下は、その方法です。
use std::io::{self, Read, Cursor};
fn main() -> io::Result<()> {
// バイトストリームを作成する
let bytes = vec![0x48, 0x65, 0x6c, 0x6c, 0x6f];
let mut cursor = Cursor::new(bytes);
// io::Readトレイトを使用して、バイトストリームを読み込む
let mut buffer = [0; 5];
cursor.read(&mut buffer)?;
println!("{:?}", buffer); // [72, 101, 108, 108, 111]
Ok(())
}
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=6c9cf1c0e2035c1fdeebf1ecc89604b9
上記のコードでは、バイトストリームを作成し、io::Cursorでラップしています。そして、io::Readトレイトを使用して、バイトストリームを読み込んでいます。
これで、Rustでバイトストリームをio::Readトレイトで扱えるようになります。
Penpen7のブログ